package redisdb

import (
	"context"
	"fmt"
	"time"

	"github.com/redis/go-redis/v9"
)

// RedisClient 全局 Redis 客户端
var RedisClient *redis.Client

// RedisConfig 用于配置 Redis 参数
type RedisConfig struct {
	Addr     string
	Password string
	DB       int
}

func NewRedisConfig(c RedisConfig) *RedisConfig {
	return &RedisConfig{
		Addr:     c.Addr,
		Password: c.Password,
		DB:       c.DB,
	}
}

// InitRedis 初始化 Redis 连接
func (c *RedisConfig) InitRedis() error {
	RedisClient = redis.NewClient(&redis.Options{
		Addr:     c.Addr,
		Password: c.Password, // 如果没有密码可以留空
		DB:       c.DB,       // 默认 DB 0
	})

	// 测试连接
	ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
	defer cancel()
	if err := RedisClient.Ping(ctx).Err(); err != nil {
		return fmt.Errorf("redis connect failed: %w", err)
	}
	return nil
}
